<?php
	/**
	 *	字符串相关操作工具
	 **/
namespace common\services\tool;

use Yii;
use common\services\tool\GnhPosition;

class GnhString {

    /**
     * 根据要求生成由数字组成的对应长度字符串
     * @param int $num  需要的随机排列字符串长度
     * @param int $type 需要的随机排列字符串的类型 0.数字 1.小写英文 2.大写英文 3.大小写英文 4.数字英文
     * @return string   返回相对应的字符串
     */
	public static function randomNum($num = 6,$type = 0)
	{
		$key = '';
		if($type == 0){
			$pattern = '0123456789';
			$len = 9;
		}
		if($type == 1){
			$pattern = 'abcdefghijklmnopqrstuvwxyz';
			$len = 25;
		}
		if($type == 2){
			$pattern = 'ABCDEFGHIJKLOMNOPQRSTUVWXYZ';
			$len = 25;
		}
		if($type == 3){
			$pattern = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
			$len = 50;
		}
		if($type == 4){
			$pattern = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
			$len = 60;
		}
		for($i=0;$i<$num;$i++)
	    {
	        $key .= $pattern{mt_rand(0,$len)};    //生成php随机数
	    }
	    return $key;
	}

	/**
	 *	生成唯一六位字符串（使用前在做一次判断）
	 **/
	public static function randCode()
	{
		//最终得出
		return substr(md5(time().mt_rand(1,1000000)),8,6);
	}

    /**
     * 根据身份证号码，判断用户的性别
     * @param $idCard       身份号码(18位)
     * @return bool|int
     */
	public static function sexJudge($idCard)
	{
		// 判断用户身份证号码的长度是否正确
		if(strlen($idCard) != 18){
			return false;
		}
		// 截取倒数第二位数，判断单双数，单数男，双数女
		$sexNum = substr($idCard,-2,1);
		if($sexNum % 2 == 0){
			$sex = 0;			// 女
		}else{
			$sex = 1;			// 男
		}
		return $sex;
	}

    /**
     * 根据身份证号码，返回当前用户的生日
     * @param $idCard   身份号码(18位)
     * @return bool|string
     */
	public static function userBirthday($idCard)
	{
		// 判断用户身份证号码的长度是否正确
		if(strlen($idCard) != 18){
			return false;
		}
		// 截取第7~14位，判断生日
		return substr($idCard,6,4).'-'.substr($idCard,10,2).'-'.substr($idCard,12,2);
	}

    /**
     * 根据身份证号码，返回当前用户的户籍所在地(省)
     * @param $idCard 身份号码(18位)
     * @return bool|string
     */
	public static function userAdd($idCard)
	{
		// 判断用户身份证号码的长度是否正确
		if(strlen($idCard) != 18){
			return false;
		}
		// 截取第1~2位
		$str = substr($idCard,0,2);
		return GnhPosition::provinceNum($str);
	}

}